package dao.LibraryDao;

import dao.BaseDao;
import common.model.Entity.libraryEntity.Fine;
import common.model.Entity.libraryEntity.enums.FineStatus;

import java.sql.Connection;
import java.util.List;
import java.util.Optional;

/**
 * 罚款记录数据访问接口。
 *
 * <p>负责 {@code t_fine_record} 表的增删改查及与业务相关的查询。</p>
 */
public interface FineDao extends BaseDao<Fine, Long> {

    /**
     * 根据用户 ID 查询所有罚款记录
     *
     * @param userId 用户主键
     * @return 罚款记录列表，若不存在则返回空列表
     */
    List<Fine> findByUserId(Long userId);

    /**
     * 根据借阅记录 ID 查询对应的罚款记录。
     *
     * @param borrowRecordId 借阅记录主键
     * @return 查询到的罚款记录，若不存在则返回 {@link Optional#empty()}
     */
    Optional<Fine> findByBorrowRecordId(Long borrowRecordId);

    /**
     * 根据罚款状态查询所有符合条件的罚款记录。
     *
     * @param status 罚款状态枚举
     * @return 罚款记录列表，若不存在则返回空列表
     */
    List<Fine> findByStatus(FineStatus status);

}
